越接近完賽越害怕自己今天到底發文了沒!這幾天早中晚都會反覆確認有沒有發文,畢竟堅持30天寫技術文章那麼久,不得不擔心功虧一簣呢 XD
今天要介紹的是很方便和常用的套件。學寫程式之後才知道有很多眉角,比方說用 Git 做版本控制,然後推上 GitHub ,除了基本的版控,團體協作也很方便。但是專案中總是會有比較機密敏感的資訊,尤其是使用者名稱和密碼、金鑰等,如果是自己在本地操作就算了,一旦推上 GitHub,很快就會被掃描到,被有心人士竊取又更麻煩了。為了安全性的問題,所以才有了 Figaro 套件。利用 gitignore,把敏感資料存成環境變數,整理成一個檔案,讓 Git 忽略這個檔案,不加入版控之中,而環境變數可以在專案全域中取用,達到保護機密資訊的作用。
Figaro 在應用程序中解析一個忽略 Git 的 yaml 文件,並將其值加載到中ENV。
先到 RubyGem 尋找 figaro,然後回到專案 Gemfile 加入:
# Gemfile
gem 'figaro', '~> 1.2'
也別忘記:
$ bundle install
接著下這個指令會在 config 資料夾中長出一個檔案application.yml
,並且加入到.gitignore
$ bundle exec figaro install
application.yml
先打開剛剛產生的檔案,有給一些範例:
小提醒:ENV 是的儲存方式是一個簡單的 key / value。所有值都將轉換為字串。深度巢狀的配置結構是不可能的。
本地配置的數據會根據 Rails 的環境去改變。也就是可以設定不同環境下,給予不同的設定:
pusher_app_id: "2954"
pusher_key: "7381a978f7dd7f9a1117"
pusher_secret: "abdc3b896a0ffb85d373"
test:
pusher_app_id: "5112"
pusher_key: "ad69caf9a44dcac1fb28"
pusher_secret: "83ca7aa160fedaf3b350"
development:
pusher_app_id: "1234"
pusher_key: "ad69cbe8b33dcac1fc89"
pusher_secret: "94cd8bb160fedaf3b461"
production:
pusher_app_id: "9999"
pusher_key: "cd69aef9a26dcac1fb34"
pusher_secret: "98ca7aa173fedaf3b664"
補充:yaml wiki
在程式碼中輸入 ENV[...]
,即可得到在設定檔案中配置好的密碼
ENV["pusher_secret"]
把帳戶、密碼、連結等存在這裡,用法很簡單,卻提升很多安全性問題喔!
今天的一切,都是為了明天的一小部分!
參考資料:
使用figaro管理密鑰
使用 Carrierwave 與 Figaro套件,在Heroku 部署 Rails 專案結合 AWS S3 存放上傳圖片
學無止盡,每天都要進步一點點!